<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>数值扩展</title>
</head>
<body>
    <script>
        // 0. Number.EPSILON 是 JavaScript 表示的最小精度
        // EPSILON 属性的值接近于 2.2204460492503130808472633361816E-16
        function equal(a, b){
            // 如果两个浮点值的差小于Number.EPSILON,就认为它们是相等的
            if(Math.abs(a-b) < Number.EPSILON){
                return true;
            }else{
                return false;
            }
        }
        // console.log(0.1 + 0.2); // 0.30000000000000004
        // console.log(0.1 + 0.2 === 0.3); // false
        // console.log(equal(0.1 + 0.2, 0.3)) // true

        // 1. 二进制和八进制
        // let b = 0b1010; // 二进制
        // let o = 0o777; // 八进制
        // let d = 100; // 十进制
        // let x = 0xff; // 十六进制
        // console.log(x);

        // 2. Number.isFinite  检测一个数值是否为有限数
        // console.log(Number.isFinite(100)); // true
        // console.log(Number.isFinite(100/0)); // false
        // console.log(Number.isFinite(Infinity)); // false
        
        // 3. Number.isNaN 检测一个数值是否为 NaN 
        // console.log(Number.isNaN(123)); // false
        // console.log(Number.isNaN(NaN)); // true

        // 4. Number.parseInt Number.parseFloat字符串转整数
        // console.log(Number.parseInt('520love')); // 520
        // console.log(Number.parseFloat('520.1314神奇')); // 520.1314

        // 5. Number.isInteger 判断一个数是否为整数
        // console.log(Number.isInteger(5)); // true
        // console.log(Number.isInteger(2.5)); // false

        // 6. Math.trunc 将数字的小数部分抹掉  
        // console.log(Math.trunc(3.5)); // 3

        // 7. Math.sign 判断一个数到底为正数 负数 还是零
        console.log(Math.sign(100)); // 1
        console.log(Math.sign(0)); // 0
        console.log(Math.sign(-20000)); // -1

    </script>
</body>
</html>